using System.Collections.Generic;
using System.Globalization;

namespace Quiki
{
    public class DocumentProcessorSettings
    {
        public CultureInfo Culture
        {
            get { return culture; }
            set { culture = value; }
        }

        public CustomProperties CustomProperties
        {
            get { return customProperties; }
        }

        public string FileExclusionFilter
        {
            get { return fileExclusionFilter; }
            set { fileExclusionFilter = value; }
        }

        public string FtpServer
        {
            get { return ftpServer; }
            set { ftpServer = value; }
        }

        public int? FtpServerPort
        {
            get; set;
        }

        public string FtpUserName
        {
            get { return ftpUserName; }
            set { ftpUserName = value; }
        }

        public string FtpPassword
        {
            get { return ftpPassword; }
            set { ftpPassword = value; }
        }

        public string FtpRemoteDir
        {
            get { return ftpRemoteDir; }
            set { ftpRemoteDir = value; }
        }

        public bool GenerateParsingInfoFiles
        {
            get { return generateParsingInfoFiles; }
            set { generateParsingInfoFiles = value; }
        }

        public string InputDir { get; set; }
        public string InputFilter
        {
            get { return inputFilter; }
            set { inputFilter = value; }
        }

        public IList<string> LinkedFiles
        {
            get { return linkedFiles; }
        }

        public string OutputDir { get; set; }

        public bool Recursive
        {
            get { return recursive; }
            set { recursive = value; }
        }

        public string TemplateFileName
        {
            get { return templateFileName; }
            set { templateFileName = value; }
        }

        public void AddLinkedFile (string fileName)
        {
            linkedFiles.Add(fileName);
        }

        private CultureInfo culture = CultureInfo.InvariantCulture;
        private bool generateParsingInfoFiles = false;
        private bool recursive = true;
        private string fileExclusionFilter = @"(\.svn)|(\.html)$";
        private string ftpServer;
        private string ftpUserName;
        private string ftpPassword;
        private string ftpRemoteDir;
        private string inputFilter = "*.wiki";
        private string templateFileName;
        private CustomProperties customProperties = new CustomProperties();
        private List<string> linkedFiles = new List<string>();
    }
}